package cn.com.ctcloud.saas.user.service.impl;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.com.ctcloud.saas.user.dao.IUserDao;
import cn.com.ctcloud.saas.user.domain.UserObj;
import cn.com.ctcloud.saas.user.service.IUserService;

@Service
public class UserServiceImpl implements IUserService {
	@Autowired
	private IUserDao userDao;

	/**
	 * 保存对象
	 * 
	 * @param obj 对象
	 */
	@Override
	public void saveOrUpdate(final UserObj obj) {
		if (obj == null) {
			return;
		}
		final UserObj oldObj = userDao.getByLogicId(obj.getLogicId());

		// 有ID的话要判断是否保存还是更新
		if (oldObj == null) {
			// 保存
			this.setForm(obj, obj);

			userDao.save(obj);

		} else {
			// 更新
			this.setForm(obj, oldObj);

			userDao.update(oldObj);
		}
	}

	/**
	 * 根据ID删除对象
	 * 
	 * @param logicId 对象ID
	 */
	@Override
	public void deleteByLogicId(final String logicId) {
		if (StringUtils.isEmpty(logicId)) {
			return;
		}

		final UserObj obj = userDao.getByLogicId(logicId);
		if (obj == null) {
			return;
		}

		userDao.deleteByLogicId(logicId);
	}

	/**
	 * 根据id查询对象
	 * 
	 * @param logicId 对象logicId
	 * @return 对象
	 */
	@Override
	public UserObj getByLogicId(final String logicId) {
		if (StringUtils.isEmpty(logicId)) {
			return null;
		}
		return userDao.getByLogicId(logicId);
	}

	/**
	 * 查询所有对象
	 * 
	 * @return 对象集合
	 */
	@Override
	public List<UserObj> findAll() {
		return userDao.findAll();
	}

	/**
	 * 复制信息
	 * 
	 * @param fromObj 原信息
	 * @param toObj   新信息
	 */
	private void setForm(final UserObj fromObj, final UserObj toObj) {
		toObj.setName(StringUtils.trimToEmpty(fromObj.getName()));
		toObj.setPwd(StringUtils.trimToEmpty(fromObj.getPwd()));

	}

}